// Learn TypeScript:
//  - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/typescript.html
//  - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/typescript.html
// Learn Attribute:
//  - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html
//  - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
//  - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html
//  - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html

import Watcher from "../Framework/scripts/Watcher";
import DragItem from "./DragItem";
import CanDrag from "./editor/CanDrag";
import GameAssetMgr from "./GameAssetMgr";

const { ccclass, property } = cc._decorator;

@ccclass
export default class ItemList extends cc.Component {


    @property(cc.Prefab)
    pref: cc.Prefab;

    @property(cc.Node)
    stage: cc.Node;

    start() {

        Watcher.on(GameAssetMgr.SpriteLoadedEvent, this, () => {
            cc.loader.loadResDir("item", cc.SpriteFrame, (err, resource: cc.SpriteFrame[]) => {
                if (!err) {
                    let i = 0;
                    for (let sf of resource) {
                        i++;
                        let inst = cc.instantiate(this.pref);
                        let item = inst.getComponent(DragItem);
                        item.stage = this.stage;
                        item.icon.spriteFrame = sf;
                        inst.x = 80;
                        inst.getComponentInChildren(cc.Label).string = i.toString();
                        this.node.addChild(inst);
                    }
                }
            });
        });

    }


}
